home *** CD-ROM | disk | FTP | other *** search
/ PC World 2007 June / PCWorld_2007-06_cd.bin / temacd / wikipad / WikidPad-1.9beta2.exe / {app} / extensions / referrals.py < prev    next >
Text File  |  2007-02-02  |  4KB  |  103 lines

  1. # Example plugin for EditorFunctions type plugins
  2. # The functionality was originally implemented by endura29 <endura29@gmail.com>
  3. # Cosmetic changes by schnullibullihulli (2006-06-01)
  4. #
  5. # The plugin allows to install new menu items and toolbar items and register a
  6. # a function with each that is called. The function must accept one argument which
  7. # is the instance of PersonalWikiFrame providing access to the editor and the data store.
  8. #
  9. # To register a menu item implement the function describeMenuItem to return a
  10. # sequence of tuples at least containing the callback function, the item string
  11. # and an item tooltip (see below for details).
  12. #
  13. # To register a toolbar item implement the function describeToolbarItem to return
  14. # a tuple at least containing the callback function, item label, tooltip and icon.
  15. #
  16. # both register functions must accept one argument which is again the
  17. # PersonalWikiFrame instance
  18.  
  19. # descriptor for EditorFunctions plugin type
  20. # WIKIDPAD_PLUGIN = (("EditorFunctions",1),)
  21. WIKIDPAD_PLUGIN = (("MenuFunctions",1), ("ToolbarFunctions",1))
  22.  
  23. def describeMenuItems(wiki):
  24.     """
  25.     wiki -- Calling PersonalWikiFrame
  26.     Returns a sequence of tuples to describe the menu items, where each must
  27.     contain (in this order):
  28.         - callback function
  29.         - menu item string
  30.         - menu item description (string to show in status bar)
  31.     It can contain the following additional items (in this order), each of
  32.     them can be replaced by None:
  33.         - icon descriptor (see below, if no icon found, it won't show one)
  34.         - menu item id.
  35.  
  36.     The  callback function  must take 2 parameters:
  37.         wiki - Calling PersonalWikiFrame
  38.         evt - wxCommandEvent
  39.  
  40.     An  icon descriptor  can be one of the following:
  41.         - a wxBitmap object
  42.         - the filename of a bitmap (if file not found, no icon is used)
  43.         - a tuple of filenames, first existing file is used
  44.     """
  45.     return ((referrals, "Show referring pages\tCtrl-Shift-P", "Show referring pages"),)
  46.  
  47.  
  48. def describeToolbarItems(wiki):
  49.     """
  50.     wiki -- Calling PersonalWikiFrame
  51.     Returns a sequence of tuples to describe the menu items, where each must
  52.     contain (in this order):
  53.         - callback function
  54.         - tooltip string
  55.         - tool item description (string to show in status bar)
  56.         - icon descriptor (see below, if no icon found, a default icon
  57.             will be used)
  58.     It can contain the following additional items (in this order), each of
  59.     them can be replaced by None:
  60.         - tool id.
  61.  
  62.     The  callback function  must take 2 parameters:
  63.         wiki - Calling PersonalWikiFrame
  64.         evt - wxCommandEvent
  65.  
  66.     An  icon descriptor  can be one of the following:
  67.         - a wxBitmap object
  68.         - the filename of a bitmap (if file not found, a default icon is used)
  69.         - a tuple of filenames, first existing file is used
  70.     """
  71.     return ((referrals, "Referers", "Show referring pages", ("rename", "tb_rename")),)
  72.     #icon = wiki.lookupIcon("tb_rename")
  73.     # return ((referrals, "Referers", "Show referring pages", icon),)
  74.  
  75.  
  76. def referrals(wiki, evt):
  77.     if wiki.getCurrentWikiWord() is None:
  78.         return
  79.  
  80.     formatting = wiki.getFormatting()
  81.     def bracketWord(word):
  82.         return formatting.wikiWordStart + word + formatting.wikiWordEnd
  83.  
  84.     wiki.getActiveEditor().AddText(u"\n------------------------\n")
  85.  
  86.     parents = wiki.wikiData.getParentRelationships(wiki.getCurrentWikiWord())
  87.     parents = [bracketWord(word) for word in parents]
  88.     wiki.getActiveEditor().AddText(u"*%s page(s) referring to* %s\n" %
  89.             (len(parents), bracketWord(wiki.getCurrentWikiWord())))
  90.  
  91.     for word in parents:
  92.         wiki.getActiveEditor().AddText(u"%s\n" % word)
  93.     wiki.getActiveEditor().AddText(u"------------------------\n")
  94.  
  95.     children = wiki.wikiData.getChildRelationships(wiki.getCurrentWikiWord())
  96.     children = [bracketWord(word) for word in children]
  97.     wiki.getActiveEditor().AddText(u"*%s page(s) referred to by* %s\n" %
  98.             (len(children), bracketWord(wiki.getCurrentWikiWord())))
  99.  
  100.     for word in children:
  101.         wiki.getActiveEditor().AddText(u"%s\n" % word)
  102.     wiki.getActiveEditor().AddText(u"------------------------\n")
  103.